package com.ruoyi.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * OJ题目对象 oj_problem
 * 
 * @author ruoyi
 * @date 2025-01-21
 */
public class OjProblem extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 题目ID */
    private String problemId;

    /** 题目名称 */
    @Excel(name = "题目名称")
    private String problemName;

    /** 题目描述 */
    @Excel(name = "题目描述")
    private String problemDescription;

    /** 输入格式 */
    @Excel(name = "输入格式")
    private String inputFormat;

    /** 输出格式 */
    @Excel(name = "输出格式")
    private String outputFormat;

    /** 题目难度 */
    @Excel(name = "题目难度")
    private String difficulty;

    /** 题目分值 */
    @Excel(name = "题目分值")
    private BigDecimal score;

    /** 时间限制(ms) */
    @Excel(name = "时间限制(ms)")
    private Integer timeLimit;

    /** 内存限制(MB) */
    @Excel(name = "内存限制(MB)")
    private Integer memoryLimit;

    /** 题目分类 */
    @Excel(name = "题目分类")
    private String category;

    /** 题目标签 */
    @Excel(name = "题目标签")
    private String tags;

    /** 提交次数 */
    @Excel(name = "提交次数")
    private Integer submissionCount;

    /** 通过次数 */
    @Excel(name = "通过次数")
    private Integer acceptedCount;

    /** 通过率 */
    @Excel(name = "通过率")
    private BigDecimal acceptanceRate;

    /** 题目状态 */
    @Excel(name = "题目状态")
    private String status;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    public void setProblemId(String problemId) 
    {
        this.problemId = problemId;
    }

    public String getProblemId() 
    {
        return problemId;
    }

    public void setProblemName(String problemName) 
    {
        this.problemName = problemName;
    }

    public String getProblemName() 
    {
        return problemName;
    }

    public void setProblemDescription(String problemDescription) 
    {
        this.problemDescription = problemDescription;
    }

    public String getProblemDescription() 
    {
        return problemDescription;
    }

    public void setInputFormat(String inputFormat) 
    {
        this.inputFormat = inputFormat;
    }

    public String getInputFormat() 
    {
        return inputFormat;
    }

    public void setOutputFormat(String outputFormat) 
    {
        this.outputFormat = outputFormat;
    }

    public String getOutputFormat() 
    {
        return outputFormat;
    }

    public void setDifficulty(String difficulty) 
    {
        this.difficulty = difficulty;
    }

    public String getDifficulty() 
    {
        return difficulty;
    }

    public void setScore(BigDecimal score) 
    {
        this.score = score;
    }

    public BigDecimal getScore() 
    {
        return score;
    }

    public void setTimeLimit(Integer timeLimit) 
    {
        this.timeLimit = timeLimit;
    }

    public Integer getTimeLimit() 
    {
        return timeLimit;
    }

    public void setMemoryLimit(Integer memoryLimit) 
    {
        this.memoryLimit = memoryLimit;
    }

    public Integer getMemoryLimit() 
    {
        return memoryLimit;
    }

    public void setCategory(String category) 
    {
        this.category = category;
    }

    public String getCategory() 
    {
        return category;
    }

    public void setTags(String tags) 
    {
        this.tags = tags;
    }

    public String getTags() 
    {
        return tags;
    }

    public void setSubmissionCount(Integer submissionCount) 
    {
        this.submissionCount = submissionCount;
    }

    public Integer getSubmissionCount() 
    {
        return submissionCount;
    }

    public void setAcceptedCount(Integer acceptedCount) 
    {
        this.acceptedCount = acceptedCount;
    }

    public Integer getAcceptedCount() 
    {
        return acceptedCount;
    }

    public void setAcceptanceRate(BigDecimal acceptanceRate) 
    {
        this.acceptanceRate = acceptanceRate;
    }

    public BigDecimal getAcceptanceRate() 
    {
        return acceptanceRate;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("problemId", getProblemId())
            .append("problemName", getProblemName())
            .append("problemDescription", getProblemDescription())
            .append("inputFormat", getInputFormat())
            .append("outputFormat", getOutputFormat())
            .append("difficulty", getDifficulty())
            .append("score", getScore())
            .append("timeLimit", getTimeLimit())
            .append("memoryLimit", getMemoryLimit())
            .append("category", getCategory())
            .append("tags", getTags())
            .append("submissionCount", getSubmissionCount())
            .append("acceptedCount", getAcceptedCount())
            .append("acceptanceRate", getAcceptanceRate())
            .append("status", getStatus())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
} 